package interview.questions.回文串;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * 问题：
 * <p>
 * 给定一个字符串，判断其是否为一个回文串。只考虑字母和数字，忽略大小写。
 */
public class Solution {
    static Logger logger = LoggerFactory.getLogger(Solution.class);
    public static boolean isPalindrome(String s1) {
        if ( s1 == null || "".equals(s1)) {
            logger.info("输入字符为空={}",s1);
            return true;
        }

        String s = interview.questions.过滤特殊字符.Solution.StringFilter(s1);
        logger.info("过滤特殊字符后={}",s);

        if (s.length() < 0 || s == null || "".equals(s)) {
            logger.info("过滤特殊字符后为空={}",s1);
            return true;
        }
        int i = 0, j = s.length() - 1;//左右边界
        while (i < j) {
            while (i < j && !Character.isLetterOrDigit(s.charAt(i))) {
                i++;
            }

            while (i < j && !Character.isLetterOrDigit(s.charAt(j))) {
                j--;
            }

            if (Character.toLowerCase(s.charAt(i)) != Character.toLowerCase(s.charAt(j))) {
                return false;
            }
            i++;
            j--;
        }
        return true;
    }
}
